In computer networks, information and/or services are typically shared between two or more computing devices. The relationship between various computing devices on a network may be described in terms of a model known as the client/server model. In the client server model computing devices on a computer network are categorized according to whether they are providing information (“server”) or receiving information (“client”). In this sense, a server may be defined as a computing device, or a computer program being run on a computing device that waits for and handles requests for data, e-mail, file transfers, etc., from one or more clients. Conversely, a client may be defined as a computing device or program that makes a request to the server and uses the data or services of another computing device or program (server).
One common variation of the client/server model is known as peer-to-peer. In the peer-to-peer model each computing device may operate as either or both the server and the client. Typically this is accomplished by all computing devices in the peer-to-peer network having the same networking program to connect with each other. These computing devices may then access files from one another directly or with the use of a mediating server.
The Internet is one example of a computer network. The Internet may be used either in the client/server model or in the peer-to-peer model. As each computer in the peer-to-peer model is at some point a client or a server, the term client/server, as used herein, will apply both to the client/server as well as the peer-to-peer relationship.
The Internet may be broadly defined as a worldwide network of interconnected computers or computing devices. With respect to the Internet, the “client” typically refers to a computer or computer processes that is used to access content on various computing devices (“servers”) or computer processes located on or within the Internet. Typically, when a user logs onto the Internet or the World Wide Web (WWW), using a client computing device, the user views “Web pages” that are stored on remote servers (Web site servers) connected to the Internet or the WWW. Information including data files and the Web pages are often shared and transferred between the client and the server.
Web site servers typically employ one or more computer systems to interface with clients accessing the Web site. Web site servers maintain or employ, among other things, programs and resources that manage the operations and information of the server. The function of a server is often broken down or classified according to the various functionality that is provided by the Web site server. For example, a Web site server may be defined as having a Web server, an application server, and a legacy server. Using this type of classification, a Web server may be broadly described as a computer process, computer processes, or one or more computing devices running at a Web site which sends out Web pages in response to requests from a client. An application server may be described as computer process, computer processes, or one or more computing devices which handle interactions and communications between the Web server and various backend business applications and Web server and the legacy server. A legacy server may be defined as a program or programs and/or a database containing various information which is accessed by the Web server via the application server. Typically, legacy servers manage one or more databases.
Typically, application servers employ an Application Programming Interface (API). An API may be thought of as an interface between the server's operating system and various application programs. APIs typically specify the way in which various application programs communicate with the operating system and the resources or services that an operating system makes available to the application programs.
As previously discussed, servers maintain resources that may be shared through the Internet and are capable of processing a client request to access those resources. In order to share resources, clients and servers must communicate over a defined communications protocol. The Hyper Text Transfer Protocol (HTTP) is the primary communications protocol that is used for communication between servers and clients on the WWW. A typical client/server interaction using HTTP comprises establishing a connection between the client and the server, performing a request for data, and terminating the connection. According to the HTTP protocol, the server does not maintain any state about the connection once it has been terminated. HTTP is, therefore, a stateless application protocol. Consequently, each time the client requests information from the server using the HTTP protocol, a new connection must be established between the server and the client.
In order to navigate the vast amount of information located on the multitude of servers located on the WWW, and to easily view the information sent from a server and/or to run applications sent from a server, clients typically employ a software application known as a Web browser, or simply browser. A browser may generally be described as a user-friendly interface located on a client that allows a user to communicate requests to a server and receive information from the server without requiring the user of the client to learn a complicated command syntax. Browsers typically provide a graphical user interface (GUI) for displaying information from a server and for receiving input from a client.
During a typical client/server interaction on the WWW, a browser is used on the client to send a request to the server for information, such as a request to view a particular Web page. After receiving the request from the client, the server transmits the requested information to the client as a document which is encoded using a markup language. Upon receiving the encoded document, a browser on the client parses the encoded document and produces an image, such as a Web page, on the client based on the information in the encoded document. As such, it may be said that the encoded document defines the image or Web page that is rendered by the browser at runtime. In addition to displaying information or Web pages, a browser may also retrieve applications or programs from a server to be executed on the client. One example of a program that may be downloaded from a server and executed on a browser is a Java applet.
Browsers generally display information on a client as pages or documents. These pages or documents are typically encoded using what are referred to as markup languages. Generally speaking, a markup language defines a set of markup symbols or codes (tags) which are inserted into a file intended for display on a browser. In this sense, a markup language “tells” a browser how to display a Web page's words and images. For example, with respect to text, the markup language typically defines different heading styles, bold, italic, numbered lists, insertion of images, etc. Markup languages also typically define how hyperlinks are displayed and used. A hyper link is a link in a document that leads to another WWW site, or another place within the same document or Web page.
Currently, there are a number of markup languages which are in use on the WWW. The most prevalent of these markup languages is the Hyper-Text Markup Language (HTML). HTML is a derivative of the ISO defined Standard Generalized Markup Language (SGML). While HTML is the markup language formally recommended by the World Wide Web Consortium (W3C) and is generally adhered to by most browsers, a variety of proprietary dialect variations and non-standard extensions, such as HTMLS and DHTML, etc., that depart from the published standard are employed on various servers and clients (browsers) across the WWW. These dialect variations present number of problems for Web site developers. Principal among these problems is that the dialect variations make it difficult or impossible for a Web site developer to be certain how the content of their Web pages will be displayed in the various browsers employing the HTML variations. As such, Web site developers often must spend countless hours testing the appearance of their Web pages using a number of different browsers to attempt to author HTML based Web pages which will provide a consistent and reliable display of content.
In addition to HTML, there are also a number of other alternative markup languages employed on the Internet or WWW. One of these alternative markup languages is the Extensible Markup Language (XML) which is similar to HTML in that both XML and HTML contain markup symbols to describe the contents of a Web page or file. However, while HTML describes the content of a Web page (mainly text and graphic images) only in terms of how it is to be displayed and interacted with, XML describes the content of a Web page in terms of what data is being described. Another difference between HTML and XML is that unlike HTML, where the number and type of markup symbols used is limited and predefined, the number and type of markup symbols in XML are unlimited and self-defining.
One markup language which is used to specify content and user interface for Wireless Application Protocol (WAP) devices, is the Handheld Device Markup Language (HDML). HDML is a vendor specific proprietary language which can only be viewed on mobile phones that use a vendor specific browser. There are a number of proprietary and non-proprietary derivatives of HDML including the Wireless Markup Language (WML). The main differences between HDML and WML are that WML can use a scripting language, and HDML has no scripting of any kind. Additionally, unlike HDML, WML is based on XML.
One problem that occurs as a result of the numerous markup languages is that often times multiple Web sites must be created and maintained to provide the same or similar information to clients using various different markup languages. For example, if a client, such as a PDA or a Web-compatible cellular phone employs WML, that PDA or a Web-compatible cellular phone would need to log onto a Web site designed specifically for delivering WML encoded content. This same situation would also be true for users of cellular phones employing HDML.
The Internet and the WWW typically employ what is known as a thin client/three tier architecture in which a browser executes only what is known as the presentation or display logic and the server executes the business logic. The display logic may be defined as the program, or part of a program, that receives data and, among other things, formats the received data for output on the client. The display logic typically is included as a part of the browser on the client. The display logic typically receives encoded files (HTML, etc.) or Web pages and displays the files or Web pages on the client within the GUI. The business logic may be defined as a program or part of the program that encodes the business rules associated with a particular problem domain. For example in an accounting application, the logic of how a particular account can be increased or decreased based on customer deposits or withdrawals is coded based on specific business rules for each particular bank. The business logic typically resides on the server side and it is coded separately from the display logic.
Many, if not all, of the above stated problems related to client/server relationship and the development of software to facilitate reliable and consistent communications between a client and a server stem from the fact that clients and servers are currently developed separately. Typically, clients are either developed to integrate with protocols and markup languages currently being employed on servers, or servers are designed to integrate with protocols and markup languages which are specific to a client. As such, valuable development time and resources are spent in an attempt to deal with the multiplicity of protocols and markup languages. Additionally, each time a new protocol or markup language is developed, client and server designers must decide whether to spend the appropriate time and resources to support the changes, thus taking valuable time and resources away from other development projects.
Another problem associated with the separate development of clients and servers is that the information sent to the client from the server must necessarily be somewhat generic in form and content to accommodate the various client devices. As such, the full capabilities and/or limitations of the client are not accounted for or accommodated for in, for example, the design of Web pages. Similarly, the separate development of the client and server, and the generic form and content that results, precludes optimization of communications bandwidth between the client and server.
It is with respect to these and other considerations that the present invention has been developed.